import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lenovo
 * Date: 2022-09-18
 * Time: 10:15
 */
public class type3 {
    public static void main(String[] args) {
        //随机产生10W个数字
        int[] arr = new int[100];
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(50);
        }

       // func1(arr);
        func2(arr);
        func22(arr);
        //func3(arr);
    }

    /**
     * 统计每个数字出现的次数,并打印出来
     * @param arr
     */
    private static void func3(int[] arr) {
        Map<Integer,Integer> map = new TreeMap<>();
        //1.第一遍循环将arr里的值全部放入map里
        int i = 0;
        for (; i < arr.length; i++) {
           if(!map.containsKey(arr[i])){
               map.put(arr[i],1);
           }else{
               int value = map.get(arr[i]);
               map.put(arr[i],value+1);
           }
        }
//       Set<Map.Entry<Integer,Integer>> entrySet= map.entrySet();
//        for (Map.Entry<Integer,Integer>entry: entrySet) {
//            System.out.println("数字:"+entry.getKey()+"次数:"+entry.getValue());
//        }
        System.out.println(map);
    }

    /**
     * 找出第一次重复出现的数字
     * @param arr
     */
    private static void func2(int[] arr) {//1.用set 在每次add前判断一下,set集合里是否已经存在
        Set<Integer> set = new HashSet<>();
        int i = 0;
        for (; i < arr.length;i++) {
            if(set.contains(arr[i])){
                break;
            }
            set.add(arr[i]);
        }
        System.out.println(arr[i]);
    }
    //使用map
    private static void func22(int[] arr) {//1.用map在每次put前判断一下,集合里的这个key的value是否已经==1
       Map<Integer,Integer> map = new HashMap<>();
       int i = 0;
        for (; i < arr.length; i++) {
         if(!map.containsKey(arr[i])){
             map.put(arr[i],1);
         }else {
           break;
         }
        }
        if (i > arr.length){
            return;
        }
        //System.out.println(map.get(arr[i]));//返回的是可以对应的value,也就是说在这个段逻辑里,这里永远返回的是1
        System.out.println(arr[i]);
    }

    /**
     * 10W个数字去重
     */
    private static void func1(int[] arr) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
        System.out.println(set);
    }
}
